From: Florian Müllner Date: Fri, 23 Feb 2018 22:58:22 +0000 (+0100) Subject: volume: Add back sound feedback on scroll X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~375 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5af8bf27885d35d9027e961ea516a5dd4cfe9d53;p=gnome-shell.git volume: Add back sound feedback on scroll Commit 8d4855f1008 accidentally removed the volume change feedback for scroll events. Add it back to be consistent again with moving the slider via arrow keys, slider drags/clicks and gsd's media keys handling. https://gitlab.gnome.org/GNOME/gnome-shell/issues/53 --- diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js index 0f4611898..48ae45a9a 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js @@ -1,7 +1,7 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- /* exported Indicator */ -const { Clutter, Gio, GObject, Gvc, St } = imports.gi; +const { Clutter, Gio, GLib, GObject, Gvc, St } = imports.gi; const Signals = imports.signals; const Main = imports.ui.main; @@ -30,6 +30,9 @@ var StreamSlider = class { this.item = new PopupMenu.PopupBaseMenuItem({ activate: false }); + this._inDrag = false; + this._notifyVolumeChangeId = 0; + this._slider = new Slider.Slider(0); this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' }); @@ -38,7 +41,11 @@ var StreamSlider = class { this._sliderChangedId = this._slider.connect('notify::value', this._sliderChanged.bind(this)); - this._slider.connect('drag-end', this._notifyVolumeChange.bind(this)); + this._slider.connect('drag-begin', () => (this._inDrag = true)); + this._slider.connect('drag-end', () => { + this._inDrag = false; + this._notifyVolumeChange(); + }); this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); this.item.add(this._icon); @@ -116,6 +123,16 @@ var StreamSlider = class { this._stream.change_is_muted(false); } this._stream.push_volume(); + + if (!this._notifyVolumeChangeId && !this._inDrag) { + this._notifyVolumeChangeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => { + this._notifyVolumeChange(); + this._notifyVolumeChangeId = 0; + return GLib.SOURCE_REMOVE; + }); + GLib.Source.set_name_by_id(this._notifyVolumeChangeId, + '[gnome-shell] this._notifyVolumeChangeId'); + } } _notifyVolumeChange() {